//package com.yunhe.spo.repository.data;
//
//import com.yunhe.common.domain.data.Area;
//import org.springframework.data.neo4j.annotation.Query;
//import org.springframework.data.neo4j.repository.Neo4jRepository;
//import org.springframework.data.repository.query.Param;
//import org.springframework.stereotype.Repository;
//
///**
// * 地区数据仓库
// * @desc 地区数据仓库定义
// * @author liuronglei
// */
//@Repository
//public interface AreaRepository extends Neo4jRepository<Area, Long> {
//    /**
//     * 根据地区编号获得地区对象
//     * @param name 地区编号
//     */
//    Area findByName(String name);
//
//    /**
//     * 根据地区标题获得地区对象
//     * @param title 地区标题
//     */
//    Area findByTitle(String title);
//
//    /**
//     * 根据地区代码获得地区对象
//     * @param code 地区代码
//     */
//    Area findByCode(Long code);
//
//    /**
//     * 获得有单位关联的地区对象
//     */
//    @Query("match(:Firm)-[:AREA_OF]->(n:Area) return n")
//    Iterable<Area> findFirmAreas();
//
//    /**
//     * 根据单位代码获得单位关联的地区对象
//     * @param firmCode 单位代码
//     */
//    @Query("match(f:Firm)-[:AREA_OF]->(n:Area) where f.code={firmCode} return n")
//    Area findFirmArea(@Param("firmCode") Long firmCode);
//
//    /**
//     * 根据地区编号删除地区对象
//     * @param name 地区编号
//     */
//    Long deleteByName(String name);
//
//    /**
//     * 根据地区代码删除地区对象
//     * @param code 地区代码
//     */
//    Long deleteByCode(Long code);
//
//    /**
//     * 根据地区获得所属单位
//     * @param  firmId 单位ID
//     */
//    @Query("start firm=node({firmId}) match(firm)-[:AREA_OF]->(area) return area")
//    Iterable<Area> findAreaByFirmId(@Param("firmId") Long firmId);
//
//    @Query("MATCH (n:Area) WHERE not ()-[:HAS_CHILD]->(n) WITH n MATCH p=(n)-[:HAS_CHILD*0..9]->(m) RETURN p")
//    Iterable<Area> findAreas();
//
//    @Query("start a=node({id}) match(p:Area)-[r:HAS_CHILD]->(a:Area) delete r")
//    void unbindParentAreaById(@Param("id") Long id);
//
//    @Query("start n=node({parentId}),m=node({childId}) create (n)-[:HAS_CHILD]->(m)")
//    void bindChildAreaById(@Param("parentId") Long parentId, @Param("childId") Long childId);
//
//    @Query("match(s:Station)-[]->(a:Area) where s.code={stationCode} return a")
//    Area findByStationCode(@Param("stationCode") Long stationCode);
//
//    @Query("start p=node({id}) match (p)-[]-(a:Area) return a")
//    Area findByPriceId(@Param("id") Long priceId);
//}
